package com.zbb.exam_system.config;

import com.zbb.exam_system.task.LoginTask;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
import org.springframework.context.annotation.Bean;


public class QuartzConfig {
    @Bean
    public Scheduler scheduler() throws SchedulerException {
        //从调度工厂中创建一个调度对象
        Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
        //任务细节的定义
        JobDetail oneJob = JobBuilder
                //任务类，一个实现了Job接口的类，里面定义的是具体的任务执行的内容
                .newJob(LoginTask.class)
                //任务的标识，任务的名字，任务所在的组
                //可以通过任务的名字和分组的名字来操作一个或多个任务
                .withIdentity("task1", "group1")
                .build();

        //触发器规则的定义
        TriggerBuilder<Trigger> newTrigger = TriggerBuilder.newTrigger();
        //触发器也可以设置名字和所在组
        //可以通过触发器的名字和组操作触发器
        newTrigger.withIdentity("trigger1", "group1");
        //用来执行任务的具体触发规则
        //CronScheduleBuilder--最常用，这里通过Cron表达式指定任务执行的时间
        newTrigger.withSchedule(CronScheduleBuilder.cronSchedule("1-59 1-30 * * * ?"));
        //具体的触发器对象
        Trigger oneTrigger = newTrigger.build();
        //调度器开始调度任务
        scheduler.scheduleJob(oneJob, oneTrigger);
        //正式开始调度
        scheduler.start();
        return scheduler;

    }
}
